<template>
<!-- 对话框，绑定show，禁止关闭按钮和点击消失 -->
  <el-dialog
    title="角色"
    :visible.sync="show"
    width="30%"
    center
    :show-close="false"
    :close-on-click-modal="false"
  >
    <el-form :model="formLabelAlign">
      <el-form-item label="角色名称">
        <el-input v-model="formLabelAlign.name"></el-input>
      </el-form-item>
      <el-form-item label="角色编码">
        <el-input v-model="formLabelAlign.code"></el-input>
      </el-form-item>
      <el-form-item label="角色描述">
        <el-input v-model="formLabelAlign.description"></el-input>
      </el-form-item>
    </el-form>
    <span slot="footer" class="dialog-footer">
      <!-- 确定和取消按钮绑定事件 -->
      <el-button @click="cancel">取 消</el-button>
      <el-button type="primary" @click="confirm"
        >确 定</el-button
      >
    </span>
  </el-dialog>
</template>

<script>
// 引入更新或保存角色
import { saveOrUpdate, getRole } from '@/services/role'
export default {
  // 父组件传递的参数
  props: ['show', 'getId'],
  data () {
    return {
      // 对话框内部组件数据
      formLabelAlign: {}
    }
  },
  methods: {
    // 获取需要编辑的角色数据
    async getInfo (id) {
      if (id !== 0) {
        // 如果传入的角色id不是0，获取角色数据，否则不获取数据
        const { data } = await getRole(id)
        if (data.code === '000000') {
          this.formLabelAlign = data.data
        }
      }
    },
    // 确定按钮点击事件函数
    async confirm () {
      // 判断必填项是否为空
      if (this.formLabelAlign.name && this.formLabelAlign.code) {
        // 如果必填项不为空获取数据
        const { data } = await saveOrUpdate(this.formLabelAlign)
        if (data.code === '000000') {
          // 如果添加或者保存成功弹出提示
          this.$message({
            message: '保存角色成功',
            type: 'success'
          })
          // 触发自定义事件，清空数据
          this.$emit('reset')
          this.formLabelAlign = {}
          this.$emit('upDate')
        }
      } else {
        // 提示必填项必填
        this.$message.error('角色名称和编码是必填项哦')
      }
    },
    // 取消按钮点击事件函数
    cancel () {
      // 触发子组件自定义事件
      this.$emit('reset')
      // 清空数据
      this.formLabelAlign = {}
    }
  },
  // 侦听器
  watch: {
    // 侦听show，一旦show为true，立马调用函数
    show (newvalue) {
      if (newvalue) {
        this.getInfo(this.getId)
      }
    }
  }
}
</script>
